home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1997 November & December / Amiga-CD 1997 #11-12.iso / pd-disketten / ungepackt / 9_95 / apd-9-95-2 / arexx-workshop / listings / lhaoptions < prev    next >
Text File  |  1996-01-25  |  14KB  |  441 lines

  1. /* LHAOptions for LHAControl written 04.94 by Karsten Wysocki */
  2.  
  3. call addlib('apig.library',0,-30,0)
  4. call addlib("rexxsupport.library",0,-30,0)
  5.  
  6. portname = "LHAOptions"
  7. portlist = Showlist('p')
  8. if find(portlist,portname) > 0 then exit
  9. p = openport(portname)
  10.  
  11. options = getclip('LHAopts')
  12. if options = "" then options = " | x | -e -r -2 | a "
  13.  
  14.  
  15. trenn = index(options,'|')
  16. extractswitches = delstr(options,trenn)
  17. options = delstr(options,1,trenn)
  18. trenn = index(options,'|')
  19. extractcommand = delstr(options,trenn)
  20. options = delstr(options,1,trenn)
  21. trenn = index(options,'|')
  22. archivswitches = delstr(options,trenn)
  23. options = delstr(options,1,trenn)
  24. archivcommand = options
  25.  
  26.  
  27. call set_apig_globals()
  28.  
  29. screen  = LOCKPUBSCREEN("Workbench")
  30. drinfo  = GETSCREENDRAWINFO(screen)
  31. scrvinfo = GETVISUALINFO(screen)
  32. scrfont  = GETVALUE(screen,40,4,'p')
  33.  
  34. glistpointer   = ALLOCVEC(4,MEMF_CLEAR)
  35. conxgad        = CREATECONTEXT(glistpointer)
  36. previousgadget = conxgad
  37. textid         = 10
  38.  
  39. maketext = "call SETNEWGADGET(newgadx,scrvinfo,scrfont,lft,top,wdt,hgt,'',
  40.                               PLACETEXT_IN,textid,null());
  41.             previousgadget = CREATEGADGET(TEXT_KIND,previousgadget,newgadx,
  42.                              GTTX_TEXT,txt,TAG_DONE,0)"
  43.  
  44.  
  45. txt = "Extract Options:"
  46. lft = 2
  47. top = 2
  48. wdt = 0
  49. hgt = 10
  50. newgadx = MAKENEWGADGET(scrvinfo,scrfont,lft,top,wdt,hgt,"",
  51.                        ,PLACETEXT_IN,textid,null())
  52. previousgadget = CREATEGADGET(TEXT_KIND,previousgadget,newgadx,
  53.                              ,GTTX_TEXT,txt,TAG_DONE,0)
  54.  
  55. txt = "_________________";top = 4;interpret maketext
  56. lft = 25
  57. txt = "Extract with full path";top = 16;interpret maketext
  58. txt = "Touch extracted files";top = 28;interpret maketext
  59. txt = "Extract only new files";top = 40;interpret maketext
  60.  
  61. call SETNEWGADGET(newgadx,scrvinfo,scrfont,204,-2,4,55,'',
  62.                               ,PLACETEXT_IN,textid,null());
  63. previousgadget = CREATEGADGET(BUTTON_KIND,previousgadget,newgadx,
  64.                               ,TAG_DONE,0)
  65.  
  66. txt = "Archive Options:"
  67. lft = 210
  68. top = 2
  69. interpret maketext
  70. txt = "_________________";top = 4;interpret maketext
  71. lft = 233
  72. txt = "Freshen Archive-files";top = 16;interpret maketext
  73. txt = "Archive empty dirs";top = 28;interpret maketext
  74. txt = "Collect files recoursive";top = 40;interpret maketext
  75. lft = 453
  76. txt = "LH5 compression";top = 16;interpret maketext
  77. txt = "LH4 compression";top = 28;interpret maketext
  78. txt = "LH1 compression";top = 40;interpret maketext
  79.  
  80. call SETNEWGADGET(newgadx,scrvinfo,scrfont,-2,52,589,3,"",
  81.                   ,PLACETEXT_IN,textid,null())
  82. previousgadget = CREATEGADGET(BUTTON_KIND,previousgadget,newgadx,
  83.                                  ,TAG_DONE,0)
  84.  
  85. call SETNEWGADGET(newgadx,scrvinfo,scrfont,3,58,160,14,"Use Options",
  86.                   ,PLACETEXT_IN,40,null())
  87. previousgadget = CREATEGADGET(BUTTON_KIND,previousgadget,newgadx,
  88.                                  ,TAG_DONE,0)
  89.  
  90. call SETNEWGADGET(newgadx,scrvinfo,scrfont,208,58,160,14,"Reset Options",
  91.                   ,PLACETEXT_IN,41,null())
  92. previousgadget = CREATEGADGET(BUTTON_KIND,previousgadget,newgadx,
  93.                                  ,TAG_DONE,0)
  94.  
  95. call SETNEWGADGET(newgadx,scrvinfo,scrfont,413,58,160,14,"Cancel",
  96.                   ,PLACETEXT_IN,42,null())
  97. previousgadget = CREATEGADGET(BUTTON_KIND,previousgadget,newgadx,
  98.                                  ,TAG_DONE,0)
  99.  
  100.  
  101. wintitle = "LHA Control Options    LHAControl is programmed by Karsten Wysocki"
  102. winidcmp = GADGETUP+GADGETDOWN+MOUSEMOVE+SIZEVERIFY+REFRESHWINDOW
  103. winflags = WINDOWDRAG+WINDOWDEPTH+GIMMEZEROZERO+ACTIVATE+SMART_REFRESH
  104.  
  105. w1  = OPENWINDOW(portname,35,191,585,88,2,4,winidcmp,winflags,wintitle,scr,0,null(),null(),conxgad)
  106. call GT_REFRESHWINDOW(w1,null())
  107.  
  108. /*------------------------------------------------------- Window Rastport holen ---*/
  109. wrastport = GETWINDOWRASTPORT(w1)
  110.  
  111. /*------------------------------------ Speicherstruktur für MX-Images erstellen ---*/
  112. imgtags = ALLOCATETAGITEMS(8)
  113.           call SETTAGSLOT(imgtags,1,SYSIA_DRAWINFO,'p',drinfo)
  114.           call SETTAGSLOT(imgtags,0,SYSIA_WHICH,'n',MXIMAGE)
  115.           mximg = NEWOBJECTA(null(),"sysiclass",imgtags)
  116.  
  117. /*------------------ Code-Variablen für spätere Interpret-Anweisungen definieren ---*/
  118. makebgad = "call makeboolgadget(w1,lft,top-1,18,11,GADGHCOMP,GADGIMMEDIATE,0,0,0,0,gadid,g0)"
  119. gadup = "call DRAWIMAGE(wrastport,mximg,lft,top)"
  120. gaddown = "call DRAWIMAGESTATE(wrastport,mximg,lft,top,IDS_SELECTED,drinfo)"
  121.  
  122. /*-------------------------------------------------- Definition der Bool-Gadgets ---*/
  123. lft = 2
  124. top = 16;gadid = 11
  125. g0  = makeboolgadget(w1,lft,top-1,18,11,GADGHCOMP,GADGIMMEDIATE,0,0,0,0,gadid,0)
  126. top = 28;gadid = 12;interpret makebgad
  127. top = 40;gadid = 13;interpret makebgad
  128. lft = 210
  129. top = 16;gadid = 21;interpret makebgad
  130. top = 28;gadid = 22;interpret makebgad
  131. top = 40;gadid = 23;interpret makebgad
  132. lft = 430
  133. top = 16;gadid = 31;interpret makebgad
  134. top = 28;gadid = 32;interpret makebgad
  135. top = 40;gadid = 33;interpret makebgad
  136.  
  137. /*------------------------ Bool-Gadgets an Gadget-Struktur des Fensters anhängen ---*/
  138. z = addglist(w1,g0,-1,-1,0)
  139. z = refreshgadgets(g0,w1,0)
  140.  
  141.  
  142. /*----------------------------------------------- Vergleichs-Variablen festlegen ---*/
  143. TRUE  = 1
  144. FALSE = 0
  145.  
  146. LH5 = " -2"
  147. LH4 = " -1"
  148. LH1 = " -0"
  149.  
  150. recoursiv = " -r"
  151. emptydirs = " -e"
  152. paths     = " -x"
  153. touch     = " -E"
  154. newfiles  = " -G"
  155.  
  156. archiv   = "a"
  157. freshen  = "f"
  158. extract  = "e"
  159. fullpath = "x"
  160.  
  161.  
  162. /*--------- Zustände der Boolgadgets feststellen und entsprechende MX-Images ins ---*/
  163. /*--------- Fenster projezieren.                                                 ---*/
  164. hit = index(extractcommand,"x")
  165. lft = 2;top = 16
  166. if hit = FALSE
  167.    then do
  168.         ex1 = FALSE;ex1sw = extract
  169.         interpret gadup
  170.         end
  171.    else do
  172.         ex1 = TRUE;ex1sw = fullpath
  173.         interpret gaddown
  174.         end
  175.  
  176. hit = index(extractswitches,"-E")
  177. lft = 2;top = 28
  178. if hit = FALSE
  179.    then do
  180.         ex2 = FALSE;ex2sw = ""
  181.         interpret gadup
  182.         end
  183.    else do
  184.         ex2 = TRUE;ex2sw = touch
  185.         interpret gaddown
  186.         end
  187.  
  188. hit = index(extractswitches,"-G")
  189. lft = 2;top = 40
  190. if hit = FALSE
  191.    then do
  192.         ex3 = FALSE;ex3sw = ""
  193.         interpret gadup
  194.         end
  195.    else do
  196.         ex3 = TRUE;ex3sw = newfiles
  197.         interpret gaddown
  198.         end
  199.  
  200. hit = index(archivcommand,"f")
  201. lft = 210;top = 16
  202. if hit = FALSE
  203.    then do
  204.         arc1 = FALSE;arc1sw = archiv
  205.         interpret gadup
  206.         end
  207.    else do
  208.         arc1 = TRUE;arc1sw = freshen
  209.         interpret gaddown
  210.         end
  211.  
  212. hit = index(archivswitches,"-e")
  213. lft = 210;top = 28
  214. if hit = FALSE
  215.    then do
  216.         arc2 = FALSE;arc2sw = ""
  217.         interpret gadup
  218.         end
  219.    else do
  220.         arc2 = TRUE;arc2sw = emptydirs
  221.         interpret gaddown
  222.         end
  223.  
  224. hit = index(archivswitches,"-r")
  225. lft = 210;top = 40
  226. if hit = FALSE
  227.    then do
  228.         arc3 = FALSE;arc3sw = ""
  229.         interpret gadup
  230.         end
  231.    else do
  232.         arc3 = TRUE;arc3sw = recoursiv
  233.         interpret gaddown
  234.         end
  235.  
  236. lft = 430
  237. LHcomp = "FALSE"
  238. hit = index(archivswitches,"-0")
  239. if hit ~= FALSE
  240.    then do
  241.         LHcomp = LH1
  242.         top = 16;interpret gadup
  243.         top = 28;interpret gadup
  244.         top = 40;interpret gaddown
  245.         end
  246.  
  247. hit = index(archivswitches,"-1")
  248. if hit ~= FALSE
  249.    then do
  250.         LHcomp = LH4
  251.         top = 16;interpret gadup
  252.         top = 28;interpret gaddown
  253.         top = 40;interpret gadup
  254.         end
  255.  
  256. hit = index(archivswitches,"-2")
  257. if hit ~= FALSE | LHcomp = "FALSE"
  258.    then do
  259.         LHcomp = LH5
  260.         top = 16;interpret gaddown
  261.         top = 28;interpret gadup
  262.         top = 40;interpret gadup
  263.         end
  264.  
  265.  
  266. /*-------------------------------------------- Beginn der Hauptprogrammschleife ---*/
  267. exitme = 0
  268. do while exitme = 0
  269.    x = waitpkt(portname)
  270.    do forever
  271.       msg = getpkt(portname)
  272.       if msg = '0000 0000'x then leave
  273.       msgclass  = getarg(msg,0)
  274.       if msgclass = DIE then exitme = 1
  275.       if msgclass = CLOSEWINDOW then exitme = 1
  276.       if msgclass = SIZEVERIFY then exitme = 1
  277.       if msgclass = GADGETDOWN | msgclass = GADGETUP then
  278.          do
  279.            gadid  = getarg(msg,9)
  280.            select
  281.                  when gadid = 11 then
  282.                       do
  283.                         lft = 2;top = 16
  284.                         if ex1 = TRUE
  285.                            then do
  286.                                 ex1 = FALSE;interpret gadup
  287.                                 ex1sw = extract
  288.                                 end
  289.                            else do
  290.                                 ex1 = TRUE;interpret gaddown
  291.                                 ex1sw = fullpath
  292.                                 end
  293.                       end
  294.                  when gadid = 12 then
  295.                       do
  296.                         lft = 2;top = 28
  297.                         if ex2 = TRUE
  298.                            then do
  299.                                 ex2 = FALSE;interpret gadup
  300.                                 ex2sw = ""
  301.                                 end
  302.                            else do
  303.                                 ex2 = TRUE;interpret gaddown
  304.                                 ex2sw = touch
  305.                                 end
  306.                       end
  307.                  when gadid = 13 then
  308.                       do
  309.                         lft = 2;top = 40
  310.                         if ex3 = TRUE
  311.                            then do
  312.                                 ex3 = FALSE;interpret gadup
  313.                                 ex3sw = ""
  314.                                 end
  315.                            else do
  316.                                 ex3 = TRUE;interpret gaddown
  317.                                 ex3sw = newfiles
  318.                                 end
  319.                       end
  320.                  when gadid = 21 then
  321.                       do
  322.                         lft = 210;top = 16
  323.                         if arc1 = TRUE
  324.                            then do
  325.                                 arc1 = FALSE;interpret gadup
  326.                                 arc1sw = archiv
  327.                                 end
  328.                            else do
  329.                                 arc1 = TRUE;interpret gaddown
  330.                                 arc1sw = freshen
  331.                                 end
  332.                       end
  333.                  when gadid = 22 then
  334.                       do
  335.                         lft = 210;top = 28
  336.                         if arc2 = TRUE
  337.                            then do
  338.                                 arc2 = FALSE;interpret gadup
  339.                                 arc2sw = ""
  340.                                 end
  341.                            else do
  342.                                 arc2 = TRUE;interpret gaddown
  343.                                 arc2sw = emptydirs
  344.                                 end
  345.                       end
  346.                  when gadid = 23 then
  347.                       do
  348.                         lft = 210;top = 40
  349.                         if arc3 = TRUE
  350.                            then do
  351.                                 arc3 = FALSE;interpret gadup
  352.                                 arc3sw = ""
  353.                                 end
  354.                            else do
  355.                                 arc3 = TRUE;interpret gaddown
  356.                                 arc3sw = recoursiv
  357.                                 end
  358.                       end
  359.                  when gadid = 31 then
  360.                       do
  361.                         lft = 430
  362.                         top = 16;interpret gaddown
  363.                         top = 28;interpret gadup
  364.                         top = 40;interpret gadup
  365.                         LHcomp = LH5
  366.                       end
  367.                  when gadid = 32 then
  368.                       do
  369.                         lft = 430
  370.                         top = 16;interpret gadup
  371.                         top = 28;interpret gaddown
  372.                         top = 40;interpret gadup
  373.                         LHcomp = LH4
  374.                       end
  375.                  when gadid = 33 then
  376.                       do
  377.                         lft = 430
  378.                         top = 16;interpret gadup
  379.                         top = 28;interpret gadup
  380.                         top = 40;interpret gaddown
  381.                         LHcomp = LH1
  382.                       end
  383.                  when gadid = 40 then
  384.                       do
  385.                         archivswitches =  arc2sw || arc3sw || LHcomp
  386.                         archivcommand = arc1sw
  387.                         extractswitches = ex2sw || ex3sw
  388.                         extractcommand = ex1sw
  389.                         options = 'LHAOptions' extractswitches '|' extractcommand '|' archivswitches '|' archivcommand
  390.                         ADDRESS 'LHAControl' options
  391.                         exitme = 1
  392.                       end
  393.                  when gadid = 41 then
  394.                       do
  395.                         lft = 2;top = 16
  396.                         ex1 = TRUE;interpret gaddown
  397.                         ex1sw = fullpath
  398.                         lft = 2;top = 28
  399.                         ex2 = FALSE;interpret gadup
  400.                         ex2sw = ""
  401.                         lft = 2;top = 40
  402.                         ex3 = FALSE;interpret gadup
  403.                         ex3sw = ""
  404.                         lft = 210;top = 16
  405.                         arc1 = FALSE;interpret gadup
  406.                         arc1sw = archiv
  407.                         lft = 210;top = 28
  408.                         arc2 = TRUE;interpret gaddown
  409.                         arc2sw = emptydirs
  410.                         lft = 210;top = 40
  411.                         arc3 = TRUE;interpret gaddown
  412.                         arc3sw = recoursiv
  413.                         lft = 430
  414.                         top = 16;interpret gaddown
  415.                         top = 28;interpret gadup
  416.                         top = 40;interpret gadup
  417.                         LHcomp = LH5
  418.                       end
  419.                  when gadid = 42 then exitme = 1
  420.                  otherwise nop
  421.            end
  422.          end
  423.       x = reply(msg,0)
  424.    end
  425.    if exitme = 1 then leave
  426. end
  427.  
  428. call DISPOSEOBJECT(mximg)
  429. call CLOSEWINDOW(w1)
  430. call FREESCREENDRAWINFO(screen,drinfo)
  431. call UNLOCKPUBSCREEN(null(),screen)
  432. call FREEVISUALINFO(scrvinfo)
  433. call FREETAGITEMS(imgtags)
  434. call FREEGADGETS(conxgad)
  435. call FREETHIS(newgadx)
  436. call FREEVEC(glistpointer)
  437.  
  438. ADDRESS 'LHAControl' 'LHAOptions END'
  439.  
  440. exit
  441.